/**
 * 类装饰器
 * 类装饰器接受一个参数，即类的构造函数
 *
 * 类装饰器是指接受一个类构造函数作为参数的函数，并且返回undefned、
 * 参数中提供的构造函数或一个新的构造函数。返回undefined等同于返回参数
 * 中提供的构造函数。
 *
 * 用@ + 装饰器名字来使用装饰器，
 * 一个类上可以有多个装饰器，装饰器收集是从上到下收集，执行时，是从后往前执行;
 */
function classDecorate(constructor: any) {
  constructor.prototype.getName = () => {
    return 'Dell'
  }
}

/**
 *装饰器工厂， 可以接受任意参数，并返回任意装饰器的函数
 *
 */
function decorateFactory() {
  return function (constructor: any) {}
}
